Тема
Валидация онтологии
Назначение
Валидация онтологии позволяет проверять данные онтологии на соответствие заданным правилам и своевременно выявлять ошибки: незаполненные обязательные свойства, значения вне допустимого диапазона, неверный формат (например, электронной почты) и другие нарушения. Проверка выполняется по правилам валидации, которые настраиваются для классов и свойств онтологии.
SHACL-валидация
SHACL (Shapes Constraint Language) — стандарт W3C для описания ограничений на данные. В OSA правило валидации задаёт набор ограничений для класса или свойства, которым должны соответствовать экземпляры класса. При проверке система анализирует данные и формирует отчёт о нарушениях: для каждого экземпляра указываются нарушенные правила, свойства и значения.
В зависимости от того, для чего задано правило, оно работает аналогично конструкциям SHACL:
- правило только для класса — как ограничение формы узла (Node Shape): проверяются условия, относящиеся к объекту в целом
- правило только для свойства — как ограничение формы свойства (Property Shape): проверяются условия, относящиеся к значению свойства
- правило и для класса, и для свойства — проверки свойства выполняются только для указанных классов
Основные возможности
- Настройка правил для классов и свойств — правила создаются в конструкторе (пошаговая форма) или задаются напрямую в формате JSON
- Ограничения значений свойства — количество значений (обязательность), длина строки, шаблон (регулярное выражение), диапазоны числовых значений и дат, тип ссылочного значения
- Произвольные логические условия — проверка с помощью запроса из триплетов с переменными и логическим фильтром (например, «дата последнего изменения не раньше даты создания пользователя-создателя»)
- Серьёзность нарушения — Критично (Violation), Предупреждение (Warning), Информация (Info)
- Собственное сообщение для каждого ограничения
- Наследование — правило, заданное для класса, действует и для его подклассов; для одного класса допускается несколько правил
- Проверка при сохранении данных — данные можно валидировать не только с помощью виджета, но и в момент сохранения экземпляров (включается в Главном меню, пункт Валидация при сохранении)
- Просмотр отчёта — фильтрация и группировка нарушений, список затронутых экземпляров, просмотр текста правила и открытие карточки экземпляра
Информация
Создание и редактирование правил валидации доступно пользователям с правом редактирования онтологии и администраторам платформы. Просмотр отчёта валидации доступен пользователям с правами на просмотр онтологии.
Настройка правил валидации
Правила валидации настраиваются в виджете Правило.
Подготовка
- Откройте онтологию в режиме рабочего пространства (см. раздел Работа с онтологиями)
- Если виджет Правило отсутствует на полотне, добавьте его: Добавить виджеты → Правило
- Выберите в онтологии класс или свойство, для которого настраивается правило (например, кликните по классу на полотне онтологической карты)
После выбора класса или свойства в виджете Правило отобразится блок Правила валидации со списком ранее созданных правил.
Создание правила
- Нажмите на кнопку Добавить правило валидации
- Введите наименование правила и нажмите на кнопку ОК
- Для открытия и изменения правила нажмите на иконку Открыть рядом с правилом в списке
- Выберите режим редактирования:
- Конструктор — пошаговая форма (рекомендуется)
- JSON — непосредственное редактирование правила в формате JSON
- Заполните параметры правила (см. раздел «Параметры конструктора» ниже)
- Нажмите на кнопку Сохранить
Параметры конструктора
Конструктор правила содержит следующие разделы.
Класс (targetClass) — класс проверяемых объектов. Если правило открыто из класса или свойства, поле не выводится: класс уже задан.
Запрос (select) — необязательный раздел для проверки посредством запроса. Для включения нажмите на кнопку Добавить запрос, для удаления — на иконку Удалить запрос. Раздел содержит:
- Поле Сообщение (message) — текст, выводимый при нарушении условия запроса
- Поле Серьезность (severity) — серьёзность нарушения (Критично (Violation), Предупреждение (Warning), Информация (Info))
- Поле SQL — произвольный SQL-запрос (опционально)
- Поле Цепочка свойств — редактор цепочки свойств. Синтаксис:
[Свойство] > [Свойство].[Свойство]; точка продолжает цепочку свойств, текст между скобками — оператор сравнения значений; клавишиCtrl+Space— автодополнение ссылок класса - Раздел Триплеты (where) — триплеты запроса с переменными (например,
?self,?a). Для каждого триплета задаются поля Субъект (subject), Предикат (predicate) и Объект (object); для добавления используйте кнопку Триплет - Поле Фильтр — логическое условие по переменным триплетов, например
?a > ?c
Ограничения свойств (property) — список проверяемых свойств. Для добавления свойства нажмите на кнопку Добавить свойство. Для каждого свойства доступны:
- Поле Свойство (path) — проверяемое свойство (обязательно для заполнения)
- Поле Класс (class) — класс допустимого значения (для свойств-отношений)
- Поле Сообщение (message) — собственный текст нарушения
- Поле Серьезность (severity) — серьёзность нарушения
- Поле Мин. количество значений — минимальное число значений свойства (например,
1— свойство обязательно) - Поле Макс. количество значений — максимальное число значений свойства
- Поля Мин. длина строки и Макс. длина строки — ограничения длины для строковых значений
- Поля Мин. включительное значение и Макс. включительное значение — допустимый диапазон, границы включаются
- Поля Мин. исключительное значение и Макс. исключительное значение — допустимый диапазон, границы исключаются
- Поле Регулярное выражение — шаблон, которому должно соответствовать значение
Для удаления ограничения свойства используйте иконку Удалить свойство.
Доступные ограничения зависят от типа данных свойства:
| Тип свойства | Доступные ограничения |
|---|---|
| Строковое | Мин. количество значений, Мин./Макс. длина строки, Регулярное выражение |
| Числовое, дата | Мин. количество значений, Мин./Макс. включительное значение, Мин./Макс. исключительное значение |
| Логическое | Мин. количество значений |
| Ссылочное (отношение) | Мин./Макс. количество значений, Класс |
Режим JSON
Режим JSON показывает правило целиком в виде JSON-документа и позволяет просматривать и редактировать все установленные ограничения.
Переключение режимов
В верхней части редактора правила расположен переключатель Конструктор / JSON.
- При переходе в JSON текущее состояние конструктора, включая несохранённые изменения, преобразуется в JSON-текст.
- При возврате в Конструктор JSON-текст преобразуется в соответствующие настройке на форме.
Внимание
Если JSON некорректен, форма останется пустой. Перед переключением убедитесь, что документ валиден.
Просмотр ограничений
В JSON видны все ограничения правила: класс проверяемых объектов, блок запроса и полный список ограничений свойств. Режим удобен для аудита правила, поиска причины срабатывания и сравнения правил разных классов.
Редактирование и сохранение
- Правила в JSON-тексте можно добавлять и редактировать напрямую
- Поддерживаются подсветка синтаксиса, перенос строк и форматирование (кнопка Форматировать JSON)
- Кнопка Предпросмотр позволяет переключить представление идентификаторов объектов на их наименования
- Для сохранения используйте кнопку Сохранить
- При сохранении выполняется проверка на корректность JSON с выводом соответствующего сообщения
Структура JSON
targetClass— идентификатор класса проверяемых экземпляровselect— необязательный блок условия запроса:message— сообщение при нарушенииseverity— серьёзность:Violation,WarningилиInfosql— произвольный SQL-запросselect— список возвращаемых переменных, по умолчанию["?self"]where— условие:triplets(массив объектов{ subject, predicate, object }) иfilter(логическое выражение по переменным)
property— массив ограничений свойств:path,class,message,severity,minCount,maxCount,minLength,maxLength,minInclusive,maxInclusive,minExclusive,maxExclusive,pattern
Особенности:
- в
where.tripletsпредикат — идентификатор свойства; переменные начинаются с?(?self— проверяемый экземпляр); обратная ссылка определяется порядком следованияsubjectиobject - если
select.sqlзаполнен, используется только SQL, аselectиwhere(цепочка, триплеты, фильтр) не применяются - ограничения из
propertyприменяются всегда, независимо от наличияselect
Пример
json
{
"targetClass": "4374208a-87d5-4f50-a9a5-057f01aa8b71",
"property": [
{
"path": "29133af7-13d1-4480-bcb6-df7b326fa42b",
"minCount": 1,
"message": "Не заполнен номер накладной",
"severity": "Violation"
}
],
"select": {
"message": "Сумма накладной должна быть больше нуля",
"severity": "Violation",
"sql": "select n.idt from v n where n.idp = '26aaa3fc-b867-46d8-bbec-4990111ec2b6' and n.vn > 0",
"select": ["?self"],
"where": {
"triplets": [],
"filter": ""
}
}
}Управление правилами в списке
В списке Правила валидации доступны следующие возможности:
- иконка Открыть — предназначена для открытия правила для просмотра и изменения
- иконка Копировать ID — предназначена для копирования идентификатора правила в буфер обмена
- иконка Анализировать в факт-эксплорере — предназначена для исследования правила в факт-эксплорере
- иконка Удалить правило — предназначена для удаления правила (доступна пользователям с правом редактирования онтологии)
Отключение правила
Правило можно временно отключить:
Откройте правило, установите флажок Не активно и нажмите на кнопку Сохранить (флажок доступен в режиме Конструктор)
Отключённое правило отображается в списке серым с иконкой Правило валидации отключено и не участвует в проверке.
Чтобы снова включить правило, откройте форму правила, снимите флажок и сохраните правило.
Запуск проверки и просмотр отчёта
Проверка выполняется в виджете Валидация онтологии рабочего пространства онтологии.
- Добавьте виджет Валидация онтологии на полотно онтологии
- Виджет автоматически запустит проверку данных онтологии по настроенным правилам
- Для повторной проверки нажмите на кнопку Обновить на Панели инструментов виджета - проверка будет выполнятся по актуальным данным и правилам
Виджет состоит из трёх областей:
- Фильтры — отбор нарушений по Серьезности, Правилу, Классу и Свойству. Кнопка Сбросить снимает установленные фильтры
- Список нарушений — нарушения, сгруппированные по выбранному значению Группировка: по серьезности, по правилу, по классу, по свойству или без группировки. Поле поиска фильтрует нарушения по сообщению, свойству, классу и экземпляру
- Детали нарушения — сведения о выбранном нарушении
Для просмотра деталей кликните по нарушению в списке. В области деталей выводятся:
- серьёзность нарушения и количество затронутых экземпляров
- наименование правила; кнопка Посмотреть правило открывает текст правила
- таблица Затронутые экземпляры с колонками Экземпляр, Класс и Значение
Клик по экземпляру в таблице открывает его карточку.
Если нарушения не выявлены, выводится сообщение «Нарушений не выявлено — онтология валидна».
Пример: обязательное свойство
- Создайте класс Клиент со строковым свойством Email
- Создайте правило валидации для класса Клиент: свойство Email, Мин. количество значений =
1 - Создайте экземпляр Клиент без значения Email
- Откройте виджет Валидация онтологии и обновите его: в отчёте появится проблема с серьёзностью Критично и сообщением Количество значений свойства меньше допустимого, а в затронутых экземплярах — созданный экземпляр
- Заполните значение Email у экземпляра и обновите виджет: сообщение о нарушении исчезнет